Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
11.05.2024
Размер:
834.61 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

“ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ”

Кафедра “Информатика и вычислительная техника

ОТЧЕТ

по лабораторной работе №13

МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ

Выполнил:

Студент группы ИВТ-234 Бектимиров А.Е.

_____________________________________________________

(дата, подпись)

Проверил:

ст. пр. доцент Дорошенко М.С.

_____________________________________________________

(дата, подпись)

Омск 2024

Лабораторная работа №13

Тема: Модульное программирование

Вариант 2

Задание 1

Условие задачи:

Для задачи 8_2 разработать программу, скрыв подпрограммы в отдельном файле (модуле), использовать ссылки на переменные, объявленные в другом модуле.

Текст программы:

#include <iostream>

#include <iomanip>

#include "Print.h"

#include "Fill.h"

#include "Vec.h"

int main() {

const int LEN = 6;

int** first = new int* [LEN];

int** second = new int* [LEN];

for (int i = 0; i < LEN; i++) {

first[i] = new int[LEN];

second[i] = new int[LEN];

}

fill(first, LEN);

fill(second, LEN);

if (vec(first, LEN) > vec(second, LEN)) print(first, LEN);

else print(second, LEN);

}

#pragma once

void print(int** target, int size);

#include "Print.h"

#include <iostream>

#include <iomanip>

void print(int** target, int size) {

for (int i = 0; i < size; i++) {

for (int j = 0; j < size; j++) {

std::cout << std::setw(3) << target[i][j] << " ";

}

std::cout << std::endl;

}

}

#pragma once

void fill(int** target, int LEN);

#include "Fill.h"

#include <random>

void fill(int** target, int LEN) {

for (int i = 0; i < LEN; i++) {

for (int j = 0; j < LEN; j++) {

target[i][j] = rand() % 21 - 10;

}

}

}

#pragma once

int vec(int** target, int size);

#include "Vec.h"

int vec(int** target, int size) {

int sum = 0;

for (int i = 0; i < size; i++) {

sum += target[i][i];

}

return sum;

}

Результаты выполнения программы, выводы:

Задание 2

Условие задачи:

Для задачи 9_2 разработать программу, скрыв подпрограммы в отдельном файле (модуле), использовать ссылки на переменные, объявленные в другом модуле.

Текст программы:

#include <iostream>

#include <iomanip>

#include "Func.h"

#include "Print.h"

#include "Fill.h"

int main() {

setlocale(LC_ALL, "rus");

int A[5], B[6];

fill(A, 5);

std::cout << "Массив А: ";

print(A, 5);

fill(B, 6);

std::cout << "\nМассив В: ";

print(B, 6);

int answer_one, answer_two;

std::cout << "\n\nВыпавшие значения первого массива: ";

answer_one = func(A, 5, &answer_two);

std::cout << answer_one << " " << answer_two;

std::cout << "\nВыпавшие значения второго массива: ";

answer_one = func(B, 6, &answer_two);

std::cout << answer_one << " " << answer_two;

return 0;

}

#pragma once

int func(int* target, int size, int* answer_two);

#include "Func.h"

int func(int* target, int size, int* answer_two) {

int answer_one = target[size - 2];

*answer_two = target[size - 1];

return answer_one;

}

#pragma once

void print(int* target, int size);

#include "Print.h"

#include <iostream>

#include <iomanip>

void print(int* target, int size) {

for (int i = 0; i < size; i++) {

std::cout << std::setw(3) << target[i] << " ";

}

}

#pragma once

void fill(int* target, int size);

#include "Fill.h"

#include <random>

void fill(int* target, int size) {

for (int i = 0; i < size; i++) {

target[i] = rand() % 21 - 10;

}

}

Результаты выполнения программы, выводы:

Задание 3

Условие задачи:

Даны две матрицы целых чисел M [1..3,0..1], К [1..3,0..2]. Найти средние арифметические значения для каждой из них и индексы ближайших к ним чисел.

Схема алгоритма:

Текст программы:

#include <iostream>

#include "CalculateAverage.h"

using namespace std;

int main() {

setlocale(LC_ALL, "RUS");

int M[3][2] = { {1, 2}, {3, 4}, {5, 6} };

int K[3][2] = { {7, 8}, {10, 11}, {13, 14} };

double averageM, averageK;

int indexIM, indexJM, indexIK, indexJK;

calculateAverage(M, averageM, indexIM, indexJM);

calculateAverage(K, averageK, indexIK, indexJK);

cout << "Среднее значение для матрицы M: " << averageM << ", самое близкое значение по индексу [" << indexIM << "][" << indexJM << "]" << endl;

cout << "Среднее значение для матрицы K: " << averageK << ", самое близкое значение по индексу [" << indexIK << "][" << indexJK << "]" << endl;

return 0;

}

#pragma once

void calculateAverage(int mat[3][2], double& average, int& indexI, int& indexJ);

#include "CalculateAverage.h"

#include <cmath>

const int rowsM = 3;

const int colsM = 2;

const int rowsK = 3;

const int colsK = 2;

void calculateAverage(int mat[3][2], double& average, int& indexI, int& indexJ) {

double sum = 0.0;

for (int i = 0; i < rowsM; i++) {

for (int j = 0; j < colsM; j++) {

sum += mat[i][j];

}

}

average = sum / (rowsM * colsM);

double minDiff = INT_MAX;

for (int i = 0; i < rowsM; i++) {

for (int j = 0; j < colsM; j++) {

if (abs(mat[i][j] - average) < minDiff) {

minDiff = abs(mat[i][j] - average);

indexI = i;

indexJ = j;

}

}

}

}

Результаты выполнения программы, выводы:

Соседние файлы в папке Лабораторные работы